<!DOCTYPE html>
<title>NodeFilter UseCounters</title>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<script>
test(function() {
  var NodeFilterIsFunction = 1059; // From UseCounter.h

  assert_false(internals.isUseCounted(document, NodeFilterIsFunction));

  var filterCalled = false;
  var filter = function() {
    filter.called = true;
  };

  var iterator = document.createNodeIterator(document, NodeFilter.SHOW_ALL, filter);
  iterator.nextNode();
  assert_true(filter.called);
  assert_true(internals.isUseCounted(document, NodeFilterIsFunction));
}, 'NodeFilter UseCounter for callback function');

test(function() {
  var NodeFilterIsObject = 1060; // From UseCounter.h

  assert_false(internals.isUseCounted(document, NodeFilterIsObject));

  var filter = {
    acceptNode: function() {
      filter.called = true;
    }
  };

  var iterator = document.createNodeIterator(document, NodeFilter.SHOW_ALL, filter);
  iterator.nextNode();
  assert_true(filter.called);
  assert_true(internals.isUseCounted(document, NodeFilterIsObject));
}, 'NodeFilter UseCounter for callback function');
</script>
